// #include<vector>
// #include<limits>
// #include<cstddef>
// #include<iostream>
// #include<sstream>
// #include<map>
// #include<algorithm>
// #include<tuple>
// #include<unordered_map>
// #include<functional>
// #include<memory>
// #include<cstdint>
// using namespace std;

// class JumpNum{
// public:
//     map<int, int> cache;
//     int JN(int gN){
//         if(gN == 0) return 1;
//         if(gN == 1) return 1;
//         if(cache.find(gN) != cache.end()) return cache[gN];
//         auto v1 = JN(gN-1);
//         auto v2 = JN(gN-2);
//         cache[gN] = v1+v2;
//         return cache[gN];     
//     }
// };
// int main(int, char**) {
//     string dt;
//     JumpNum jn;
//     while(getline(cin, dt)){
//         auto dv = stoi(dt);
//         auto r= jn.JN(dv);
//         cout << r << endl;
//     }
// }